package com.ruoyi.goodsStore.service.impl;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import com.ruoyi.location.domain.Location;
import com.ruoyi.location.mapper.LocationMapper;
import com.ruoyi.location.service.impl.LocationServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.goodsStore.mapper.GoodsStoreMapper;
import com.ruoyi.goodsStore.domain.GoodsStore;
import com.ruoyi.goodsStore.service.IGoodsStoreService;

/**
 * 商品存储Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-11-01
 */
@Service
public class GoodsStoreServiceImpl implements IGoodsStoreService 
{
    @Autowired
    private GoodsStoreMapper goodsStoreMapper;
    @Autowired
    private LocationMapper locationMapper;

    /**
     * 查询商品存储
     * 
     * @param goodsId 商品存储主键
     * @return 商品存储
     */
    @Override
    public GoodsStore selectGoodsStoreByGoodsId(Long goodsId)
    {
        return goodsStoreMapper.selectGoodsStoreByGoodsId(goodsId);
    }

    /**
     * 查询商品存储列表
     * 
     * @param goodsStore 商品存储
     * @return 商品存储
     */
    @Override
    public List<GoodsStore> selectGoodsStoreList(GoodsStore goodsStore)
    {
        return goodsStoreMapper.selectGoodsStoreList(goodsStore);
    }

    /**
     * 商品存储
     *
     * @param goodsStore 商品存储
     * @return 结果
     */
    @Override
    public List<GoodsStore> select(GoodsStore goodsStore) {
        return goodsStoreMapper.select(goodsStore);
    }

    @Override
    public List<GoodsStore> selectup(GoodsStore goodsStore) {
        return goodsStoreMapper.selectup(goodsStore);
    }

    /**
     * 新增商品存储
     * 
     * @param goodsStore 商品存储
     * @return 结果
     */
    @Override
    public int insertGoodsStore(GoodsStore goodsStore)
    {
        return goodsStoreMapper.insertGoodsStore(goodsStore);
    }

    /**
     * 修改商品存储
     * 
     * @param goodsStore 商品存储
     * @return 结果
     */
    @Override
    public int updateGoodsStore(GoodsStore goodsStore)
    {
        return goodsStoreMapper.updateGoodsStore(goodsStore);
    }

    /**
     * 批量删除商品存储
     * 
     * @param goodsIds 需要删除的商品存储主键
     * @return 结果
     */
    @Override
    public int deleteGoodsStoreByGoodsIds(Long[] goodsIds)
    {
        return goodsStoreMapper.deleteGoodsStoreByGoodsIds(goodsIds);
    }

    /**
     * 删除商品存储信息
     * 
     * @param goodsId 商品存储主键
     * @return 结果
     */
    @Override
    public int deleteGoodsStoreByGoodsId(Long goodsId)
    {
        return goodsStoreMapper.deleteGoodsStoreByGoodsId(goodsId);
    }

    /**
     * 修改出库货位状态
     * @param goodsId
     * @return
     */
    @Override
    public int updateLocalIdListByGoodsId(Long goodsId,int length) {
        List<GoodsStore> goodsStores = goodsStoreMapper.selectLocalIdListByGoodsId(Math.toIntExact(goodsId),length);
        goodsStoreMapper.updateStock(Math.toIntExact(goodsId),length);
        System.out.println(Arrays.toString(goodsStores.toArray()));
        int i = 0;
        for (GoodsStore goodsStore : goodsStores) {
            Location location = new Location();
            location.setId(goodsStore.getLocationId());
            location.setStatus("0");
            i= i+locationMapper.updateLocation(location);
        }
        return i;
    }


}
